The present invention relates to content management systems, and more specifically, to updating management policies in such systems. One example of a content management system is an expiration management system. Expiration management systems typically use various types of management policies to define how long an item should be kept before it expires and should be deleted from the expiration management system. When an item is created, its expiration date is calculated and stored together with the item. After running the system for some time, many items have been created in the system. For all the items, the expiration date has been calculated based on the current policy. Suppose, however, that there is a business change to extend the expiration of the policy. The newly created items will then adhere to the new policy and their expiration dates will be calculated based on this new policy. However, the existing items should also be updated with the new expiration date. Normally, updating the expiration date for the old items is both time and resource consuming because the number of the old items might be very large (sometimes even billions of old items).
There is a need to update the expiration date during off-hours, while not affecting the expiration date based queries. The recalculation should be scheduled to be done in multiple batches rather than a single one. The query result should reflect the policy change even though the date re-calculation may only be partially done.
The same requirement applies to a retention management system. In such a system, a retention policy is used to define how long an item should be retained before it can be deleted or updated. The retention date is calculated and stored for each individual item. The date needs to be re-calculated on a policy change.
These are just two examples, and it should be realized that there are many other systems that may encounter similar problems, where a management policy is used to calculate specific attribute values for items managed by the management policy and the attribute values need to be re-calculated based on a management policy change.
One way to address these types of problems is to perform the attribute updates relating to the management policy change during off-hours. However, updating the attributes for the old items in a single batch may not be acceptable if it requires more time than can be accepted from a business point of view. This can put significant constraints on the time windows during which the management policy can change. It further requires human effort to perform work during off-hours. Another solution is to avoid storing the calculated attribute values for each of the items and instead, dynamically calculate the attribute values when needed. This type of solution would bring poor performance to various aspects of the system at runtime, particularly during queries. Thus, improved techniques for content management systems are needed.